package com.okmin.base;

import android.content.Context;
import android.view.View;

import butterknife.ButterKnife;

/**
 * 这是一个提供局部视图的类,可对界面的公共进行抽取
 * @param <HOLDERBEANTYPE>
 */
public abstract class BaseController<HOLDERBEANTYPE> {
    public View           mHolderView;
    protected HOLDERBEANTYPE mData;
    protected Context mContext;
    public BaseController() {
        mHolderView=initHolderView();
        ButterKnife.bind(this,mHolderView);
        mHolderView.setTag(this);
    }

    /**
     * 提供一个视图
     * @return
     */
    protected abstract View initHolderView();

    /**
     * @param data 数据
     * @des 接收数据, 数据和视图的绑定
     */
    public void setDataAndRefreshHolderView(HOLDERBEANTYPE data) {
        // 保存数据到成员变量
        mData = data;
        //数据和视图的绑定
        bindData2HolderView(data);
    }

    protected abstract void bindData2HolderView(HOLDERBEANTYPE data);

    public void setContext(Context context) {
        mContext=context;
    }
}
